/**
 * @作者 钟诚
 * @日期 2011-7-27
 * @时间 上午11:21:26
 * @描述
 * @版本
 */
package my.utils;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

/**
 * @作者 钟诚
 * @日期 2011-7-27
 * @时间 上午11:21:26
 * @描述
 * @版本 v1.0
 */
public class StrUtil {
	/**
	 * 
	 * @描述 bean的toString方法
	 * @作者 钟诚
	 * @日期 2011-7-28
	 * @时间 上午10:58:48
	 * @param <T>
	 * @param bean
	 * @return
	 */
	public static <T> String toString(T bean) {
		Field[] fields = bean.getClass().getDeclaredFields();
		StringBuffer formatString = new StringBuffer();
		List<String> lst = new ArrayList<String>();
		int i = 0;
		try {
			for (Field field : fields) {
				Method method = bean.getClass().getMethod(
						"get" + field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1, field.getName().length()));
				String val = String.valueOf(method.invoke(bean));
				formatString.append(field.getName());
				formatString.append("\t=\t%");
				formatString.append(++i);
				formatString.append("$s\n");
//				formatString.append(val);
				lst.add(val == null ? "" : val);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		Object[] objs = lst.toArray();
		return bean.getClass().getName()+">>>toString:\n" + String.format(formatString.toString(), objs);
	}
}
